package com.eleadmin.order.biz;

import com.eleadmin.common.system.entity.User;
import com.eleadmin.damon.utils.results.PageResult2;
import com.eleadmin.order.entity.ContainOceanApply;
import com.eleadmin.order.entity.ContainerBill;
import com.eleadmin.common.core.web.JsonResult;
import com.eleadmin.order.entity.Customer;
import com.eleadmin.order.param.ContainerBillParam;
import com.eleadmin.order.result.ContainerBillWeekNum;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;

/**
 *
 * 数据层接口
 * @author : Doman
 * @date : 2023-01-13 11:14:35
 * @version ：1.0
 */
public interface ContainerBillBiz {

    /** 获取实体类表格
     * @param page
     * @param containerBill
     * @return
     */
    public JsonResult list(PageResult2<T> page, ContainerBillParam containerBill, User loginUser) throws Exception;

    /**
     * 获取实体类表格
     * @param containerBill
     * @return
     */
    public List<ContainerBill> list(ContainerBillParam containerBill, User loginUser);

    /**
     * 获取实体类表格
     * @param containerBill
     * @return
     */
    public List<ContainerBill> listForCustomerFeeList(ContainerBillParam containerBill, User loginUser);

    /**
     * 获取实体类表格
     * @param
     * @return
     */
    public List<ContainerBill> carPositionList();

    /**
     * 根据Id查询实体类
     * @param id
     * @return
     */
    public ContainerBill getById(String id);

    /**
     * 保存实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public Integer save(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean update(ContainerBill containerBill, User loginUser);

    /**
     * 删除实体类
     * @param id
     * @param loginUser
     * @return
     */
    public boolean remove(String id, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean updateState(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean updateStateBatch(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean cash(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean dropBox(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean withholding(ContainerBill containerBill, User loginUser);
    /**
     * 修改实体类
     * @param containerBill
     * @param loginUser
     * @return
     */
    public boolean carTeam(ContainerBill containerBill, User loginUser);

    /**
     * 修改实体类
     * @param containOceanApply
     * @return
     */
    public ContainOceanApply getContainerOceanApplyBy(ContainOceanApply containOceanApply) ;

    /**
     * 修改实体类
     * @param containOceanApply
     * @return
     */
    public boolean saveContainerOceanApply(ContainOceanApply containOceanApply) ;

    /**
     * 修改实体类
     * @param containOceanApply
     * @return
     */
     public boolean updateContainerOceanApply(ContainOceanApply containOceanApply);

    /**
     * 修改实体类
     * @param containOceanApply
     */
    public boolean removeContainerOceanApply(ContainOceanApply containOceanApply);

    /**
     * 修改实体类
     * @return
     */
    public List<ContainerBillWeekNum> listDayNum(ContainerBill containerBill);

    /**
     * 修改实体类
     * @return
     */
    public List<ContainerBillWeekNum> listMonthNum(ContainerBill containerBill);

    /**
     * 修改实体类
     * @return
     */
    public List<ContainerBillWeekNum> listDockNum(ContainerBill containerBill);

    /**
     * 修改实体类
     * @return
     */
    public List<ContainerBillWeekNum> listCustomerAndDriverNum(ContainerBill containerBill);

    /**
     * 修改实体类
     * @return
     */
    public List<ContainerBillWeekNum> calendarBillNum(ContainerBill containerBill);

}

